#ifndef MYSQL_CONNECT_QUEUE_H
#define MYSQL_CONNECT_QUEUE_H

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#include "mysql-connect.h"

typedef struct Node Node;

typedef struct MysqlConnectQueue MysqlConnectQueue;

// 创建 MYSQL 连接队列
MysqlConnectQueue *createConnectQueue(int capacity);

// 销毁 MYSQL 连接队列
void destroyConnectQueue(MysqlConnectQueue *queue);

// 获取队列的节点数量
int size(MysqlConnectQueue *queue);

// 获取队列的最大容量
int capacity(MysqlConnectQueue *queue);

// 队列是否为空
bool empty(MysqlConnectQueue *queue);

// 获取队头元素
MysqlConnect *front(MysqlConnectQueue *queue);

// 获取队尾元素
MysqlConnect *back(MysqlConnectQueue *queue);

// 清空队列
void clear(MysqlConnectQueue *queue);

// 队列添加新节点
bool push(MysqlConnectQueue *queue, MysqlConnect *connect);

// 队头出列
bool pop(MysqlConnectQueue *queue);

// 获取队头节点的存活时间
long getHeaderAliveTime(MysqlConnectQueue *queue);

#endif // MYSQL_CONNECT_QUEUE_H